var calUtil = {
    //当前日历显示的年份
    showYear:2015,
    //当前日历显示的月份
    showMonth:1,
    //当前日历显示的天数
    showDays:1,
    eventName:"load",
    //初始化日历
    init:function(signList){
        calUtil.setMonthAndDay();
        calUtil.draw(signList);
        calUtil.bindEnvent();
    },
    draw:function(signList){
        //绑定日历
        var str = calUtil.drawCal(calUtil.showYear,calUtil.showMonth,signList);
        $("#calendar").html(str);
        //绑定日历表头
        var calendarName=calUtil.showYear+"年"+calUtil.showMonth+"月";
        $(".calendar_month_span").html(calendarName);
    },

    nextMonth: function(dateStr){
        let date = new Date(dateStr);
        let y = date.getFullYear();
        let m = date.getMonth()+2;
        let d = date.getDate();

        if (m > 12) {
            y++;
            m -= 12;
        }
        return (y+'/'+m+'/'+d);

    },
    prevMouth: function(dateStr) {
        let date = new Date(dateStr);
        let y = date.getFullYear();
        let m = date.getMonth();
        let d = date.getDate();

        if (m <= 0) {
            y--;
            m += 12;
        }
        return (y+'/'+m+'/'+d);
    },
    //绑定事件
    bindEnvent:function(){
        let self = this;
        //绑定上个月事件
        $(".calendar_month_prev").click(function(){
            //ajax获取日历json数据
            // var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];
            // calUtil.eventName="prev";
            // calUtil.init(signList);
            var index = layer.load(0, {
                 shade: [0.1,'#000'] //0.1透明度的白色背景
             });
             let uid = $('#uid').val();
            let date = $('#date').val();
            date = self.prevMouth(date);
            $('#date').val(date);
            // console.log(uid, date);
            $.get('/admin/attendance/getSign?uid='+uid+"&date="+date, function (data) {
                layer.close(index);
                if (data.status == 200) {
                    calUtil.eventName="prev";
                    calUtil.init(data.data);
                }
            });
        });
        //绑定下个月事件
        $(".calendar_month_next").click(function(){
            // //ajax获取日历json数据
            // var signList=[{"signDay":"10"},{"signDay":"11"},{"signDay":"12"},{"signDay":"13"}];
            // calUtil.eventName="next";
            // calUtil.init(signList);
            var index = layer.load(0, {
                shade: [0.1,'#fff'] //0.1透明度的白色背景
            });
            let uid = $('#uid').val();
            let date = $('#date').val();
            date  =self.nextMonth(date);
            $('#date').val(date)
            $.get('/admin/attendance/getSign?uid='+uid+"&date="+date, function (data) {
                layer.close(index);
                if (data.status == 200) {
                    calUtil.eventName="next";
                    calUtil.init(data.data);
                }
            });
        });
    },
    //获取当前选择的年月
    setMonthAndDay:function(){
        switch(calUtil.eventName)
        {
            case "load":
                var current = new Date();
                calUtil.showYear=current.getFullYear();
                calUtil.showMonth=current.getMonth() + 1;
                break;
            case "prev":
                var nowMonth=$(".calendar_month_span").html().split("年")[1].split("月")[0];
                calUtil.showMonth=parseInt(nowMonth)-1;
                if(calUtil.showMonth==0)
                {
                    calUtil.showMonth=12;
                    calUtil.showYear-=1;
                }
                break;
            case "next":
                var nowMonth=$(".calendar_month_span").html().split("年")[1].split("月")[0];
                calUtil.showMonth=parseInt(nowMonth)+1;
                if(calUtil.showMonth==13)
                {
                    calUtil.showMonth=1;
                    calUtil.showYear+=1;
                }
                break;
        }
    },
    getDaysInmonth : function(iMonth, iYear){
        var dPrevDate = new Date(iYear, iMonth, 0);
        return dPrevDate.getDate();
    },
    bulidCal : function(iYear, iMonth) {
        var aMonth = new Array();
        aMonth[0] = new Array(7);
        aMonth[1] = new Array(7);
        aMonth[2] = new Array(7);
        aMonth[3] = new Array(7);
        aMonth[4] = new Array(7);
        aMonth[5] = new Array(7);
        aMonth[6] = new Array(7);
        var dCalDate = new Date(iYear, iMonth - 1, 1);
        var iDayOfFirst = dCalDate.getDay();
        var iDaysInMonth = calUtil.getDaysInmonth(iMonth, iYear);
        var iVarDate = 1;
        var d, w;
        aMonth[0][0] = "日";
        aMonth[0][1] = "一";
        aMonth[0][2] = "二";
        aMonth[0][3] = "三";
        aMonth[0][4] = "四";
        aMonth[0][5] = "五";
        aMonth[0][6] = "六";
        for (d = iDayOfFirst; d < 7; d++) {
            aMonth[1][d] = iVarDate;
            iVarDate++;
        }
        for (w = 2; w < 7; w++) {
            for (d = 0; d < 7; d++) {
                if (iVarDate <= iDaysInMonth) {
                    aMonth[w][d] = iVarDate;
                    iVarDate++;
                }
            }
        }
        return aMonth;
    },
    ifHasSigned : function(signList,day){
        var signed = 0;
        $.each(signList,function(index,item){
            if(item.signDay == day) {
                signed = item;
                return 0;
            }
        });
        return signed ;
    },
    drawCal : function(iYear, iMonth ,signList) {
        var myMonth = calUtil.bulidCal(iYear, iMonth);
        var htmls = new Array();
        htmls.push("<div class='sign_main' id='sign_layer'>");
        htmls.push("<div class='sign_succ_calendar_title'>");
        htmls.push("<div class='calendar_month_next'>下月</div>");
        htmls.push("<div class='calendar_month_prev'>上月</div>");
        htmls.push("<div class='calendar_month_span'></div>");
        htmls.push("</div>");
        htmls.push("<div class='sign' id='sign_cal'>");
        htmls.push("<table>");
        htmls.push("<tr>");
        htmls.push("<th>" + myMonth[0][0] + "</th>");
        htmls.push("<th>" + myMonth[0][1] + "</th>");
        htmls.push("<th>" + myMonth[0][2] + "</th>");
        htmls.push("<th>" + myMonth[0][3] + "</th>");
        htmls.push("<th>" + myMonth[0][4] + "</th>");
        htmls.push("<th>" + myMonth[0][5] + "</th>");
        htmls.push("<th>" + myMonth[0][6] + "</th>");
        htmls.push("</tr>");
        var d, w;
        for (w = 1; w < 7; w++) {
            htmls.push("<tr>");
            for (d = 0; d < 7; d++) {
                /*$.each(signList,function(index,item){
                    if(item.signDay == day) {
                       /!* signed = true;
                        return false;*!/
                       switch (item.type) {
                           case 1:
                               htmls.push("<td class='on'>" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "</td>");
                               break;
                           case 2:
                               htmls.push("<td class='blue'>" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "</td>");
                               break;
                           default:
                               htmls.push("<td>" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "</td>");
                       }
                    }
                });*/
                var ifHasSigned = calUtil.ifHasSigned(signList,myMonth[w][d]);
                // console.log(ifHasSigned);

                if(ifHasSigned){
                    switch (ifHasSigned.type) {
                        case 1:
                            htmls.push("<td class='on success' data-id='"+ifHasSigned.id+"'>" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "</td>");
                            break;
                        case 2:
                            htmls.push("<td class='on danger' data-id='"+ifHasSigned.id+"'>" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "</td>");
                            break;
                        case 3:
                            htmls.push("<td class='on warning' data-id='"+ifHasSigned.id+"'>" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "</td>");
                            break;
                    }
                    // htmls.push("<td class='on'>" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "</td>");
                } else {
                    htmls.push("<td>" + (!isNaN(myMonth[w][d]) ? myMonth[w][d] : " ") + "</td>");
                }
            }
            htmls.push("</tr>");
        }
        htmls.push("</table>");
        htmls.push("</div>");
        htmls.push("</div>");
        return htmls.join('');
    }
};